package pl.wroc.pwr.mss.server.ui.menu;

import javax.swing.JPopupMenu;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;

import pl.wroc.pwr.mss.server.ui.tables.JSongEditTable;

/**
 * Menu wyskakujace do uzytku tabeli z utworami znajdujacej sie w oknie
 * dialogowym edycji playlisty.
 * 
 * @author mjagus
 */
public class JSongEditPopupMenu extends JPopupMenu implements PopupMenuListener
{
    /**
     * Identyfikator klasy.
     */
    private static final long serialVersionUID = -1837601601971170341L;

    /**
     * Tabela z utworami w oknie dialogowym edycji playlisty.
     */
    private JSongEditTable songEditTable;

    /**
     * Pozycja w menu do dodawania nowych utworow.
     */
    private JCreateNewSongMenuItem createNewSongMenuItem;

    /**
     * Pozycja w menu do usuwania wybranych utworow.
     */
    private JRemoveSelectedSongsMenuItem removeSelectedSongsMenuItem;

    /**
     * Iniciuje komponent.
     */
    public JSongEditPopupMenu()
    {
        super();

        super.addPopupMenuListener(this);
    }

    /**
     * @return Tabela z utworami w oknie dialogowym edycji playlisty
     */
    public JSongEditTable getSongEditTable()
    {
        return songEditTable;
    }

    /**
     * Iniciuje komponenty tego menu.
     */
    public void initComponents()
    {
        super.add(createNewSongMenuItem);
        super.add(removeSelectedSongsMenuItem);
    }

    /**
     * @param songEditTable Tabela z utworami w oknie dialogowym edycji
     * playlisty
     */
    public void setSongEditTable(JSongEditTable songEditTable)
    {
        this.songEditTable = songEditTable;
    }

    /**
     * @return Pozycja w menu do dodawania nowych utworow.
     */
    public JCreateNewSongMenuItem getCreateNewSongMenuItem()
    {
        return createNewSongMenuItem;
    }

    /**
     * @param createNewSongMenuItem Pozycja w menu do dodawania nowych utworow.
     */
    public void setCreateNewSongMenuItem(JCreateNewSongMenuItem createNewSongMenuItem)
    {
        this.createNewSongMenuItem = createNewSongMenuItem;
    }

    /**
     * @return Pozycja w menu do usuwania wybranych utworow
     */
    public JRemoveSelectedSongsMenuItem getRemoveSelectedSongsMenuItem()
    {
        return removeSelectedSongsMenuItem;
    }

    /**
     * @param removeSelectedSongsMenuItem Pozycja w menu do usuwania wybranych utworow
     */
    public void setRemoveSelectedSongsMenuItem(JRemoveSelectedSongsMenuItem removeSelectedSongsMenuItem)
    {
        this.removeSelectedSongsMenuItem = removeSelectedSongsMenuItem;
    }

    @Override
    public void popupMenuCanceled(PopupMenuEvent e) {}

    @Override
    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}

    @Override
    public void popupMenuWillBecomeVisible(PopupMenuEvent e)
    {
        removeSelectedSongsMenuItem.setVisible(songEditTable.getSelectedRowCount() > 0);
    }
}
